package com.bsj.power.common.def.dto.path;

import com.bsj.power.common.def.entity.path.PathPoint;
import lombok.Data;

import javax.validation.constraints.*;
import java.util.List;

/**
 * @author LiJiaXin
 * @version 1.0.0
 * @description PathDTO
 * @time 2024/4/20 11:07
 */
@Data
public class PathDTO {

    /**
     * 围栏id
     */
    private Integer pathId;

    /**
     * 围栏名称
     */
    @NotBlank(message = "围栏名称不能为空")
    private String pathName;

    /**
     * 围栏地址
     */
    private String pathAddress;

    /**
     * 围栏类型 1关键敏感区域 2防异物区域 3受限空间区域 4风险区域
     */
    @NotNull(message = "围栏类型不能为空")
    @Min(value = 1, message = "围栏类型不存在")
    @Max(value = 4, message = "围栏类型不存在")
    private Integer pathType;

    /**
     * 状态 1进围栏
     */
    @NotNull(message = "围栏状态不能为空")
    @Min(value = 1, message = "围栏状态不存在")
    @Max(value = 1, message = "围栏状态不存在")
    private Integer status;

    /**
     * 开始时间
     */
    @NotBlank(message = "开始时间不能为空")
    private String beginTime;

    /**
     * 结束时间
     */
    @NotBlank(message = "结束时间不能为空")
    private String endTime;

    /**
     * 颜色
     */
    @NotBlank(message = "颜色不能为空")
    private String color;

    /**
     * 围栏位置点集
     */
    @NotEmpty(message = "位置点不能为空")
    private List<PathPoint> pathPoints;

    /**
     * 关联视频设备ID集合
     */
    private List<Long> deviceIds;

    /**
     * 楼层（几米层）室外0;-9.5m1;0m2;7.5m3;16m4;23m5
     */
    @NotNull(message = "楼层不能为空")
    @Min(value = 0, message = "楼层不存在")
    @Max(value = 5, message = "楼层不存在")
    private Integer floor;

    /**
     * 机组号
     */
    @NotNull(message = "机组号不能为空")
    @Min(value = 1, message = "机组号不存在")
    @Max(value = 2, message = "机组号不存在")
    private Integer building;

    /**
     * 是否是室外  1是  2否
     */
    @NotNull(message = "请选择是否是室外")
    @Min(value = 1, message = "请选择是否是室外")
    @Max(value = 2, message = "请选择是否是室外")
    private Integer isOutdoor;

    /**
     * mapId（前端判断楼层栋数）
     */
    @NotNull(message = "mapId不能为空")
    private Integer mapId;

    /**
     * 房间号
     */
    private String roomNo;
}
